# -*- coding: utf-8 -*-

import codecs
import serial
import time

ser = serial.Serial('/dev/HLF_HEAD', 115200, timeout=0.1)  # 初始化串口


# take action
# 以十进制方式传入参数
def take_action(head_y, head_x, eye_left, eye_right, eyeball, mouth):
    # 头上下转动
    # 最后两位十进制 30(仰头)——100(中位)——150(低头)
    ser.write(codecs.decode('02000b0000', 'hex_codec'))  # 头上下运动舵机速度
    time.sleep(0.005)  # s
    ser.write(codecs.decode(('02000a00' + hex(head_y)[2:]), 'hex_codec'))  # 头上下运动舵机角度
    time.sleep(0.005)

    # 头左右转动
    # 最后两位十进制 50(最右)——108(中位)——150(最左)
    ser.write(codecs.decode('02000e0000', 'hex_codec'))  # 头左右舵机速度
    time.sleep(0.005)
    ser.write(codecs.decode(('02000d00' + hex(head_x)[2:]), 'hex_codec'))  # 头左右舵机速度
    time.sleep(0.005)

    # 左眼皮开闭
    # 最后两位十进制 150(闭合)——100——80(最开)
    ser.write(codecs.decode('0200140000', 'hex_codec'))  # 左眼皮舵机速度
    time.sleep(0.005)
    ser.write(codecs.decode(('02001300' + hex(eye_left)[2:]), 'hex_codec'))  # 左眼皮舵机角度
    time.sleep(0.005)

    # 右眼皮开闭
    # 最后两位十进制 60(闭合)——88——130(最开)
    ser.write(codecs.decode('0200170000', 'hex_codec'))  # 右眼皮舵机速度
    time.sleep(0.005)
    ser.write(codecs.decode(('02001600' + hex(eye_right)[2:]), 'hex_codec'))  # 右眼皮舵机角度
    time.sleep(0.005)

    # 眼珠
    # 最后两位十进制 95(最左)——100(中位)——105(最右)
    ser.write(codecs.decode('02001a0000', 'hex_codec'))  # 眼球舵机速度
    time.sleep(0.005)
    ser.write(codecs.decode(('02001900' + hex(eyeball)[2:]), 'hex_codec'))  # 眼球舵机角度
    time.sleep(0.005)

    # 嘴巴开闭
    # 最后两位十进制 90(闭合)——130(最开)
    ser.write(codecs.decode('0200110000', 'hex_codec'))  # 嘴巴舵机速度
    time.sleep(0.005)
    ser.write(codecs.decode(('02001000' + hex(mouth)[2:]), 'hex_codec'))  # 嘴巴舵机角度
    time.sleep(0.005)
